//3.无重复字符的最长字串 
//给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串的长度。

//滑动窗口法
int lengthOfLongestSubstring(char* s) 
{
    int len = strlen(s);    //计算字符串长度
    if(len == 0)    //如果为0，直接返回0
        return 0;

    int right = 0;  //右边界
    int left = 0;   //左边界
    int max_len = 0;    //最大长度
    int arr[256] = {0}; //用于记录该字符是否在该数组中

    while(right < len)
    {
        //若该字符不在窗口中
        if(arr[s[right]] == 0)
        {
            arr[s[right]] = 1;  //将该字符添加到窗口中
            right++;            //right向后移动

            if(right-left >= max_len)   //更新max_len
                max_len = right - left;
        }
        //若该字符在窗口中
        else
        {
            arr[s[left]] = 0;   //把左边界移出窗口
            left++;             //更新新的左边界
        }
    }

    return max_len;
}